<?php

namespace app\admin\controller;

use app\admin\controller\AdminController;
use think\Db;
use think\Request;
use think\Session;


class RoleController extends AdminController
{
    public function _initialize()
    {
        parent::_initialize();
        
    }
    
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        // return 111;die;
        $res = db('lamp_role')->select();
        return view('role/role-list',['data'=>$res]);
    }


     /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        return view('role/role-add');
    }


    /**
     * 保存新建的资源
     *
     * @param  \think\Request $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
       // dump($request);die;
        // 使用注入的对象 获取POST信息
        $p = $request->post();
        // var_dump($p);die;
        // 手动处理数据
        $data = [
            'name' => $p['name'],
            'remark' => $p['remark'],
            'status' => $p['status']
        ];
        // var_dump($data);die;
        $result = db('lamp_role')->data($data)->insert();
       // var_dump($result);die;
        // 判断 执行情况
        if ($result > 0) {
            return $this->success('添加成功！', url('admin/RoleController/index'));
        } else {
            return $this->error('添加失败！');
        }

    }



     /**
     * 显示编辑资源表单页.
     *
     * @param  int $id
     * @return \think\Response
     */
    public function edit($id)
    {
        // var_dump(111);die;
        $row = db('lamp_role')->find($id);
        // var_dump($row);die;

        return view('role/role-edit', ['data' => $row, 'id' => $id]);
    }


    /**
     * 保存更新的资源
     *
     * @param  \think\Request $request
     * @param  int $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        $info = $request->put();

        // 手动处理数据
        $data = [
            'name' => $info['name'],
            'remark' => $info['remark'],
            'status' => $info['status']
        ];
//        var_dump($data);

        $result = db('lamp_role')->where('id', $id)->update($data);
        // 判断 执行情况
        if ($result > 0) {
            return $this->success('编辑成功 !', url('admin/RoleController/index'));
        } else {
            return $this->error('编辑失败 !');
        }
    }



    /**
     * 删除指定资源
     *
     * @param  int $id
     * @return \think\Response
     */
    public function delete($id)
    {
        // var_dump($id);die;
        $result = Db::name('lamp_role')->delete($id);
        if ($result > 0) {
            $info['status'] = true;
            $info['id'] = $id;
            $info['info'] = 'ID为' . $id . '的用户删除成功!';
        } else {
            $info['status'] = false;
            $info['id'] = $id;
            $info['info'] = 'ID为' . $id . '的用户删除失败!';
        }
        // JSON 返回
        return json($info);
    }

    public function nodelist($id)
    {
        // var_dump(111);die;
        // 查询所有权限
        $res = db('lamp_node')->field('name,id')->where('status','1')->select();
        // 查询该用户拥有的权限
        $data = db('lamp_role_node')->field('nid')->where('rid',$id)->select();
        // var_dump($data,$res);die;
        // 加载模版并绑定数据
        return view('role/setnode',['name'=>$res,'data'=>$data,'id'=>$id]);
    }

    public function setnode(Request $request)
    {
        // var_dump(111);die;
        // 接受数据
        $p = $request->post();

        // 清除该角色在角色节点表中所有数据
        db('lamp_role_node')->where('rid',$p['rid'])->delete();
        foreach ($p['nid'] as $k=>$v){
            $arr = [
              'nid' => $v,
              'rid' => $p['rid']
            ];
            // var_dump($arr);die;
            // 添加该角色权限数据
            $res = db('lamp_role_node')->insert($arr);

            $data[] = $res;
        }

        if(in_array(0,$data)){
            return $this->error('分配权限失败！！！');
        }else{
            return $this->success('分配权限成功～',url('admin/nodecontroller/index'));
       }
    }   


}